import { defineStore, createPinia } from "pinia";
import { GlobalState, ThemeConfigProps, AssemblySizeType } from "./interface";
import { DEFAULT_PRIMARY } from "@/config/config";
import piniaPersistConfig from "@/config/piniaPersist";
// import piniaPluginPersistedstate from "pinia-plugin-persistedstate";

export const useGlobalStore = defineStore({
    id: "globalState",
    state: (): GlobalState => ({
        // token
        token: "",
        // userInfo
        userInfo: "",
        // element组件大小
        assemblySize: "default",
        // language
        language: "",
        // themeConfig
        themeConfig: {
            // 当前页面是否全屏
            maximize: false,
            // 布局切换 ==>  纵向：vertical | 经典：classic | 横向：transverse | 分栏：columns
            layout: "vertical",
            // 默认 primary 主题颜色
            primary: DEFAULT_PRIMARY,
            // 深色模式
            isDark: false,
            // 灰色模式
            isGrey: false,
            // 色弱模式
            isWeak: false,
            // 折叠菜单
            isCollapse: false,
            // 面包屑导航
            breadcrumb: true,
            // 面包屑导航图标
            breadcrumbIcon: true,
            // 标签页
            tabs: true,
            // 标签页图标
            tabsIcon: true,
            // 页脚
            footer: true
        }
    }),
    getters: {},
    actions: {
        // setToken
        setToken(token: string) {
            this.token = token;
        },
        // setUserInfo
        setUserInfo(userInfo: any) {
            this.userInfo = userInfo;
        },
        // setAssemblySizeSize
        setAssemblySizeSize(assemblySize: AssemblySizeType) {
            this.assemblySize = assemblySize;
        },
        // updateLanguage
        updateLanguage(language: string) {
            this.language = language;
        },
        // setThemeConfig
        setThemeConfig(themeConfig: ThemeConfigProps) {
            this.themeConfig = themeConfig;
        }
    },
    persist: piniaPersistConfig("globalState")
});

// piniaPersist(持久化)
const pinia = createPinia();
// pinia.use(piniaPluginPersistedstate);

export default pinia;
